<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>1_事件处理</title>
  </head>
  <body>
    <!-- 准备号一个容器 -->
    <div id="test"></div>
    <div id="test2"></div>
    <div id="test3"></div>

    <!-- 引入react核心库 -->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- 引入react-dom，用于支持react dom操作 -->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 引入babel，用于将jsx转为js -->
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <script type="text/babel">
      // 1. 创建类组件
      class MyComponent extends React.Component {
        /*
         * 1. 通过onXxx属性指定事件处理函数注意大小写
         *   a. React使用的时自定义（合成）事件，而不是使用原生DOM事件---为了更好的兼容性
         *   b. React中事件是通过事件委托方式处理的（委托给组件最外层的元素）---为了高效
         * 2. 通过event.target得到发生事件的DOM元素对象，不要过度使用ref
         */

        // 创建ref容器
        myRef = React.createRef()

        showTips = () => {
          alert(this.myRef.current.value)
        }

        showTips2 = event => {
          alert(event.target.value)
        }

        render() {
          return (
            <div>
              <input ref={this.myRef} type="text" placeholder="点击按钮提示" />
              &nbsp;
              <button onClick={this.showTips}>显示提示信息</button>&nbsp;
              <input type="text" placeholder="失去焦点提示数据" onBlur={this.showTips2} />
            </div>
          )
        }
      }

      // 2. 渲染组件到页面
      ReactDOM.render(<MyComponent />, document.getElementById('test'))
    </script>
  </body>
</html>
